﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace CheckList
{
    public partial class formNowyEdytujWyrob : Form
    {
        private string trybPracy = "Nowy";
        private string edytowanyProgram = null;
        public formNowyEdytujWyrob(string id_program)
        {
            InitializeComponent();
            try
            {
                if (id_program != null)
                {
                    DataRow oneRow = classConfig.getRow("SELECT top 1 * FROM program WHERE id_program = '" + id_program + "'", classConfig.sqlConnString);
                    this.textBoxNazwaWyrobuPL.Text = oneRow["nazwa_pl"].ToString();
                    this.textBoxNazwaWyrobuDE.Text = oneRow["nazwa_de"].ToString();
                    comboBoxZnacznikKompletElem.SelectedIndex = comboBoxZnacznikKompletElem.FindString(oneRow["znacznik_kompl_elem"].ToString());
                    trybPracy = "Edycja";
                    edytowanyProgram = id_program;
                }
                else
                {
                    this.comboBoxZnacznikKompletElem.SelectedItem = "Paczki";
                }
            }
            catch (Exception e)
            {
                MessageBox.Show(e.Message, "Error - Edycja wyrobu", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            
        }

        private void buttonOK_Click(object sender, EventArgs e)
        {
            try
            {
                if (this.textBoxNazwaWyrobuPL.Text.Length == 0) throw new System.ArgumentException("Proszę podac nazwę Polską wyrobu");
                if (this.textBoxNazwaWyrobuDE.Text.Length == 0) throw new System.ArgumentException("Proszę podac nazwę Niemiecką wyrobu");
                if (this.comboBoxZnacznikKompletElem.SelectedItem == null) throw new System.ArgumentException("Proszę podac czy to komplet czy paczki");

                if (trybPracy == "Nowy")
                {
                    string nazwa_pl_ = classConfig.getOne("SELECT top 1 nazwa_pl FROM program WHERE nazwa_pl = '" + this.textBoxNazwaWyrobuPL.Text + "'", classConfig.sqlConnString);
                    if (nazwa_pl_ == this.textBoxNazwaWyrobuPL.Text)
                    {
                        string znacznik_ = classConfig.getOne("SELECT top 1 znacznik_kompl_elem FROM program WHERE nazwa_pl = '" + this.textBoxNazwaWyrobuPL.Text + "'", classConfig.sqlConnString);
                        if (znacznik_ == this.comboBoxZnacznikKompletElem.SelectedItem.ToString() && this.comboBoxZnacznikKompletElem.SelectedItem != null)
                            throw new System.ArgumentException("Dodawany wyrób już istnieje!");
                    }

                    string one = classConfig.getOne("SELECT top 1 id_program FROM program ORDER BY convert(integer, id_program) desc", classConfig.sqlConnString);
                    int id_program_ = Convert.ToInt16(one);
                    id_program_++;
                    string query = "INSERT INTO program (id_program,nazwa_pl,nazwa_de,znacznik_kompl_elem) " +
                        " VALUES(" + id_program_ + ",'" + this.textBoxNazwaWyrobuPL.Text + "','" + this.textBoxNazwaWyrobuDE.Text +
                        "','" + this.comboBoxZnacznikKompletElem.SelectedItem + "');";
                    classConfig.exec(query, classConfig.sqlConnString);
                }
                else if (trybPracy == "Edycja")
                {
                    string programIstnieje = classConfig.getOne("SELECT top 1 id_program FROM program WHERE nazwa_pl = '" + this.textBoxNazwaWyrobuPL.Text + "' AND id_program != " + edytowanyProgram + 
                        " AND znacznik_kompl_elem = '" + this.comboBoxZnacznikKompletElem.SelectedItem + "'", classConfig.sqlConnString);
                    if (programIstnieje != "")
                    {
                         throw new System.ArgumentException("Dodawany wyrób już istnieje!");
                    }

                    string query = "UPDATE program SET nazwa_pl = '" + this.textBoxNazwaWyrobuPL.Text + "',nazwa_de = '" + this.textBoxNazwaWyrobuDE.Text +
                        "', znacznik_kompl_elem = '" + this.comboBoxZnacznikKompletElem.SelectedItem + "' WHERE id_program = '"+edytowanyProgram+"'";
                    classConfig.exec(query, classConfig.sqlConnString);
                }
                
                this.Close();
           }
           catch ( Exception x)
           {
               MessageBox.Show(x.Message, "Error - Dodawanie nowego wyrobu", MessageBoxButtons.OK, MessageBoxIcon.Error);
           }
        }

        private void formNowyWyrob_Load(object sender, EventArgs e)
        {

        }
    }
}
